# 
# Laboratorinis darbas 2
# 
# 
# 
# p0,p1- const;
# pradines salygos y(0)=y0 ir y'(0)=v0; f(t)=0 arba f(t)=f
# kartotinumas m,pasikartojanciu saknu skaicius
# 
# 
# 
# Homogenines lygties sprendimas 
# 
# 
# Homogenine lygtis su pastoviais koeficientais 
# y''+p1*y'+p0=0
# 
> restart;
# pradines salygos (jas ivedame):
> y=y(t);

                               y = y(t)

> p0:=p0;

                               p0 := p0

> p1:=p1;

                               p1 := p1

> Lx:=(D@@2)(y)(t)+p1*D(y)(t)+p0*y(t)=0; 

                    (2)
            Lx := (D   )(y)(t) + p1 D(y)(t) + p0 y(t) = 0

# Sprendziame sudarant charakteristine lygti: 
> char:=lambda^2+p1*lambda+p0=0; 

                               2
                 char := lambda  + p1 lambda + p0 = 0

# Sios lygties saknys :
> solve(char,lambda); 

                         2                                2
   - 1/2 p1 + 1/2 sqrt(p1  - 4 p0), - 1/2 p1 - 1/2 sqrt(p1  - 4 p0)

> l1:=-1/2*p1+1/2*sqrt(p1^2-4*p0);

                                            2
                l1 := - 1/2 p1 + 1/2 sqrt(p1  - 4 p0)

> l2:=-1/2*p1-1/2*sqrt(p1^2-4*p0);

                                            2
                l2 := - 1/2 p1 - 1/2 sqrt(p1  - 4 p0)

# Tada bendrasis sprendinys yra :	
> bs:=dsolve(Lx,y(t)); 

                                              2
  bs := y(t) = _C1 exp((- 1/2 p1 + 1/2 sqrt(p1  - 4 p0)) t)

                                          2
         + _C2 exp((- 1/2 p1 - 1/2 sqrt(p1  - 4 p0)) t)

# pradedame ieskoti atskirojo sprendinio:
# 
# ivedame pradines salygas:
# y(0)=yo, tai 
> yo:=yo;

                               yo := yo

# y'(0):=vo ,tai
> vo:=vo;

                               vo := vo

> ah:=dsolve({Lx,y(0)=yo,D(y)(0)=vo},y(t)); 

                   (p1 yo + %1 yo + 2 vo) exp((- 1/2 p1 + 1/2 %1) t)
  ah := y(t) = 1/2 -------------------------------------------------
                                       2        1/2
                                    (p1  - 4 p0)

           1/2 (-p1 yo + %1 yo - 2 vo) exp((- 1/2 p1 - 1/2 %1) t)
         + ------------------------------------------------------
                                 2        1/2
                              (p1  - 4 p0)

               2
  %1 := sqrt(p1  - 4 p0)

# grafikas:
> plot(rhs(ah),t=-5..5,y=-5..5); 
Error, wrong number (or type) of parameters in function rhs

> with(plots):densityplot(rhs(ah),t=-5..5,y=-5..5,grid=[49,49]);
Error, wrong number (or type) of parameters in function rhs

> plot3d(rhs(ah),t=0..5,y=-0.5..1);
Plotting error, empty plot
> animate( rhs(ah),y=-5..5,t=-5..5,frames=50);

> with(plots):gradplot(rhs(ah),t=-5..-5,y=-5..5,grid=[15,15], color =
> rhs(ah));
Error, (in plots/fieldplot) ranges must be non-empty

> with(plots):animate3d( rhs(ah),y=-5..5,u=-2..2,t=-5..5);
Plotting error, empty plot
# Pilnai apibrezia DL bendraji sprendini sios saknys gali buti abi
# realios ir skirtingos, realios sutampancios ir kompleksines:
# 
# Realiu saknu atvejo pavyzdys
# Spresime lygti y"-y=0, y(0)=2, y'(0)=1. 
> p0:=-1;

                               p0 := -1

> p1:=0;

                               p1 := 0

> bs;

       y(t) = _C1 exp(1/2 sqrt(4) t) + _C2 exp(- 1/2 sqrt(4) t)

> l1;

                             1/2 sqrt(4)

> l2;

                            - 1/2 sqrt(4)

# atskirasis sprendinys lygus 
# y(0)=y0;
> y0:=2;

                               y0 := 2

# y'(0)=v0;
> v0:=1;

                               v0 := 1

> ah:=dsolve({Lx,y(0)=y0,D(y)(0)=v0},y(t)); 

                ah := y(t) = 3/2 exp(t) + 1/2 exp(-t)

> plot(rhs(ah),t=-2..2,y=-10..10,thickness=3,color=green); 

> with(plots):densityplot(rhs(ah),t=-2..2,y=-10..10,grid=[49,49]);

> 
> plot3d(rhs(ah),t=-2..2,y=-10..10);

> animate( rhs(ah),y=-10..10,t=-2..2,frames=50);

> with(plots):gradplot(rhs(ah),t=-2..2,y=-10..10,grid=[15,15], color =
> rhs(ah));

> with(plots):animate3d( rhs(ah),y=-10..10,u=-2..2,t=-2..2);

# Kartotines saknies atvejo pavyzdys
# Spresime lygti y"+3y'+2.25y=0, y(0)=1, y'(0)=-3. 
> p0:=2.25;

                              p0 := 2.25

> p1:=3;

                               p1 := 3

> bs;

                                  bs

> l1;

                             _C1 + 2 = 1

> l2;

                          _C1 + 1 + _C2 = 0

# atskirasis sprendinys lygus 
# y(0)=y0;
> y0:=1;

                               y0 := 1

# y'(0)=v0;
> v0:=-3;

                               v0 := -3

> ah:=dsolve({Lx,y(0)=y0,D(y)(0)=v0},y(t)); 

                   ah := y(t) = exp(t) - 4 t exp(t)

> plot(rhs(ah),t=0..5,y=-0.5..1, thickness=3,color=yellow); 

> plot3d(rhs(ah),t=0..5,y=-0.5..1);

> with(plots):densityplot(rhs(ah),t=0..5,y=-0.5..1,grid=[49,49]);

> with(plots):gradplot(rhs(ah),t=0..5,y=-0.5..1,grid=[15,15], color =
> rhs(ah));

> animate( rhs(ah),y=-0.5..1,t=0..5,frames=50);
# 

> with(plots):animate3d( rhs(ah),y=-0.5..1,u=-1..2,t=0..5);




# Kompleksiniu saknu atvejo pavyzdys
# 
# Spresime lygti y"+2y'+2501y=0, y(0)=1, y'(0)=-1
# 
> p0:=2501;

                              p0 := 2501

> p1:=2;

                               p1 := 2

> bs;

                                  bs

> l1;

                             _C1 + 2 = 1

> l2;

                          _C1 + 1 + _C2 = 0

# atskirasis sprendinys lygus 
# 
# y(0)=y0;
> y0:=1;

                               y0 := 1

# y'(0)=v0;
> v0:=-1;

                               v0 := -1

> ah:=dsolve({Lx,y(0)=y0,D(y)(0)=v0},y(t)); 

                    ah := y(t) = exp(-t) cos(50 t)

> plot(rhs(ah),t=0..2,y=-1..1, thickness=1, color= orange); 

> with(plots):densityplot(rhs(ah),t=0..2,y=-1..1,grid=[49,49]);

> with(plots):gradplot(rhs(ah),t=0..2,y=-1..1,grid=[15,15], color =
> rhs(ah));

> plot3d(rhs(ah),t=0..2,y=-1..1);

> with(plots):animate3d( rhs(ah),y=-1..1,u=-1..2,t=0..2);

> with(plots):animate( rhs(ah),y=-1..1,t=0..2,frames=50);

> 
# 
# Nehomogenines lygties sprendimas 
# 
# Antrosios eiles homogenine diferencialine lygtis su pastoviais
# koeficientais
#  y"+p1y'+p0y=f 
> restart;
# pradines salygos:
> y=y(t);

                               y = y(t)

> p0:=p0;

                               p0 := p0

> p1:=p1;

                               p1 := p1

> Lx:=diff(y(t),t,t)+p1*diff(y(t),t)+p0*y(t);

                    / 2      \
                    |d       |      /d      \
              Lx := |--- y(t)| + p1 |-- y(t)| + p0 y(t)
                    |  2     |      \dt     /
                    \dt      /

> f:=f;

                                f := f

> dl:=Lx=f; 

                  / 2      \
                  |d       |      /d      \
            dl := |--- y(t)| + p1 |-- y(t)| + p0 y(t) = f
                  |  2     |      \dt     /
                  \dt      /

# Surandame homogenines lygties L(y)=0 bendraji sprendini 
> char:=lambda^2+p1*lambda+p0=0; 

                               2
                 char := lambda  + p1 lambda + p0 = 0

> lambd:=solve(char,lambda); 

                                 2
  lambd := - 1/2 p1 + 1/2 sqrt(p1  - 4 p0),

                              2
        - 1/2 p1 - 1/2 sqrt(p1  - 4 p0)

> bh:=dsolve(Lx,y(t)); 

                                              2
  bh := y(t) = _C1 exp((- 1/2 p1 + 1/2 sqrt(p1  - 4 p0)) t)

                                          2
         + _C2 exp((- 1/2 p1 - 1/2 sqrt(p1  - 4 p0)) t)

# Patikriname kuri varianta renkames tolesniems sprendimams irasydami k
# reiksme i antra eilute zemiau::
# 
> lambda:=k;

                             lambda := k

> k:=k;

                                k := k

> R:=lambda^2+p1*lambda+p0=0; 

                             2
                       R := k  + p1 k + p0 = 0

# Neapibreztiniu koficientu metodas ieskant atskirojo sprendinio:
# char arba R - charakteringoji lygtis
# 1.kai R(k) nelygu 0
# 2. kai R(k)=0
# 1.Atskirojo nehomogenines lygties sprendinio ieskome pavidalu ,kai
# f=A*e^(k*t):
> anh:=A*exp(k*t); 

                          anh := A exp(k t)

> eq:=eval(subs(y(t)=anh,Lx=f));

               2
      eq := A k  exp(k t) + p1 A k exp(k t) + p0 A exp(k t) = f

# Surandame konstanta A 
> _A:=solve(eq,A); 
> 

                                     f
                   _A := -------------------------
                                    2
                         exp(k t) (k  + p1 k + p0)

# Uzrasome bendraji nehomogenines lygties sprendini: 
> bnh:=rhs(bh)+subs(A=_A,anh); 

                                        2
  bnh := _C1 exp((- 1/2 p1 + 1/2 sqrt(p1  - 4 p0)) t)

                                          2
         + _C2 exp((- 1/2 p1 - 1/2 sqrt(p1  - 4 p0)) t)

                 f
         + --------------
            2
           k  + p1 k + p0

> isv:=diff(bnh,t); 

  isv := _C1 (- 1/2 p1 + 1/2 %1) exp((- 1/2 p1 + 1/2 %1) t)

         + _C2 (- 1/2 p1 - 1/2 %1) exp((- 1/2 p1 - 1/2 %1) t)

               2
  %1 := sqrt(p1  - 4 p0)

# Istatome pradines salygas i bendraji sprendini ir jo isvestine:
# Ivedame pradines salygas:
# y(0)=y0:
> y0:=y0;

                               y0 := y0

# y'(0)=v0:
> v0:=v0;

                               v0 := v0

> l1:=eval(subs(t=0,bnh=y0)); 

                                        f
                l1 := _C1 + _C2 + -------------- = y0
                                   2
                                  k  + p1 k + p0

> l2:=eval(subs(t=0,isv=v0)); 

                                   2
  l2 := _C1 (- 1/2 p1 + 1/2 sqrt(p1  - 4 p0))

                                      2
         + _C2 (- 1/2 p1 - 1/2 sqrt(p1  - 4 p0)) = v0

# Sudarome sistema
# 
> sys:={l1,l2}; 
> 

                                     2
  sys := {_C1 (- 1/2 p1 + 1/2 sqrt(p1  - 4 p0))

                                      2
         + _C2 (- 1/2 p1 - 1/2 sqrt(p1  - 4 p0)) = v0,

                          f
        _C1 + _C2 + -------------- = y0}
                     2
                    k  + p1 k + p0

# Ja issprende, gauname konkrecias laisvuju konstantu reiksmes. 
# 
>  solve(sys); 
> 

             2                            2
  {f = -_C1 k  - _C1 p1 k - _C1 p0 - _C2 k  - _C2 p1 k - _C2 p0

               2
         + y0 k  + y0 p1 k + y0 p0, v0 = - 1/2 _C1 p1

                          2
         + 1/2 _C1 sqrt(p1  - 4 p0) - 1/2 _C2 p1

                          2
         - 1/2 _C2 sqrt(p1  - 4 p0), _C1 = _C1, _C2 = _C2, y0 = y0,

        k = k, p0 = p0, p1 = p1}

# Istate C1 ir C2 i bendraji sprendini surandame atskiraji sprendini 
# Nepamirskite irasyti i atskirojo sprendinio israiska konstantu C1 ir
# C2 reiksmiu is sistemos (auksciau):
> a_s:=subs(_C1=c1,_C2=c2,bnh); 
> 

                                       2
  a_s := c1 exp((- 1/2 p1 + 1/2 sqrt(p1  - 4 p0)) t)

                                         2
         + c2 exp((- 1/2 p1 - 1/2 sqrt(p1  - 4 p0)) t)

                 f
         + --------------
            2
           k  + p1 k + p0

# Atsakyma patikriname komanda dsolve 
# 
> anh:=dsolve({(D@@2)(y)(t)+p1*D(y)(t)+p0*y(t)=f,
> y(0)=y0,D(y)(0)=v0},y(t));

  anh := y(t) = - 1/2 exp((- 1/2 p1 + 1/2 %1) t)

        (p1 f - p1 y0 p0 + %1 f - %1 y0 p0 - 2 v0 p0)/(

           2        1/2
        (p1  - 4 p0)    p0) + 1/2 exp((- 1/2 p1 - 1/2 %1) t)

        (p1 f - p1 y0 p0 - %1 f + %1 y0 p0 - 2 v0 p0)/(

           2        1/2        f
        (p1  - 4 p0)    p0) + ----
                               p0

               2
  %1 := sqrt(p1  - 4 p0)

# Nehomogenines lygties sprendinys yra 
# 
>  plot(rhs(anh),t=-2..2,y=-5..5); 
> 
Plotting error, empty plot
> with(plots):densityplot(rhs(anh),t=-5..5,y=-5..5,grid=[49,49]);
Warning, the name changecoords has been redefined


> 
> plot3d(rhs(ah),t=-5..5,y=-5..5);
Error, wrong number (or type) of parameters in function rhs

> animate( rhs(anh),y=-5..5,t=-5..5,frames=50);

> with(plots):gradplot(rhs(anh),t=-5..-5,y=-5..5,grid=[15,15], color =
> rhs(anh));
Error, (in plots/fieldplot) ranges must be non-empty

> with(plots):animate3d( rhs(anh),y=-5..5,u=-2..2,t=-5..5);
Plotting error, empty plot
> 
# 2.Atskirojo nehomogenines lygties sprendinio ieskome pavidalu ,kai
# f=A*t^m*e^(k*t):
#     m-kartotinumas
> m:=m;

                                m := m

> anh:=A*t^m*exp(k*t); 

                                   m
                         anh := A t  exp(k t)

> eq:=eval(subs(y(t)=anh,Lx=f));

           m  2               m                   m
        A t  m  exp(k t)   A t  m exp(k t)   2 A t  m k exp(k t)
  eq := ---------------- - --------------- + -------------------
                2                 2                   t
               t                 t

                                 /   m                             \
              m  2               |A t  m exp(k t)      m           |
         + A t  k  exp(k t) + p1 |--------------- + A t  k exp(k t)|
                                 \       t                         /

                 m
         + p0 A t  exp(k t) = f

# Surandame konstanta A 
> _A:=solve(eq,A); 
> 

           2   /   m
  _A := f t   /  (t  exp(k t)
             /

          2                  2  2                2         2
        (m  - m + 2 m k t + k  t  + p1 t m + p1 t  k + p0 t ))

# Uzrasome bendraji nehomogenines lygties sprendini: 
> bnh:=rhs(bh)+subs(A=_A,anh);

                                        2
  bnh := _C1 exp((- 1/2 p1 + 1/2 sqrt(p1  - 4 p0)) t)

                                          2
         + _C2 exp((- 1/2 p1 - 1/2 sqrt(p1  - 4 p0)) t)

                                     2
                                  f t
         + ---------------------------------------------------
            2                  2  2                2         2
           m  - m + 2 m k t + k  t  + p1 t m + p1 t  k + p0 t


> isv:=diff(bnh,t); 

  isv := _C1 (- 1/2 p1 + 1/2 %1) exp((- 1/2 p1 + 1/2 %1) t)

         + _C2 (- 1/2 p1 - 1/2 %1) exp((- 1/2 p1 - 1/2 %1) t)

                                  2 f t
         + ---------------------------------------------------
            2                  2  2                2         2
           m  - m + 2 m k t + k  t  + p1 t m + p1 t  k + p0 t

                 2             2
              f t  (2 m k + 2 k  t + p1 m + 2 p1 t k + 2 p0 t)
         - ------------------------------------------------------
             2                  2  2                2         2 2
           (m  - m + 2 m k t + k  t  + p1 t m + p1 t  k + p0 t )

               2
  %1 := sqrt(p1  - 4 p0)

# Istatome pradines salygas i bendraji sprendini ir jo isvestine:
# Ivedame pradines salygas:
# y(0)=y0:
> y0:=y0;

                               y0 := y0

# y'(0)=v0:
> v0:=v0;

                               v0 := v0

> l1 := _C1+_C2+f/(k^2+p1*k+p0) = y0;

                                        f
                l1 := _C1 + _C2 + -------------- = y0
                                   2
                                  k  + p1 k + p0

> l2:=eval(subs(t=0,isv=v0)); 

                                   2
  l2 := _C1 (- 1/2 p1 + 1/2 sqrt(p1  - 4 p0))

                                      2
         + _C2 (- 1/2 p1 - 1/2 sqrt(p1  - 4 p0)) = v0

# Sudarome sistema
# 
> sys:={l1,l2}; 
> 

                                     2
  sys := {_C1 (- 1/2 p1 + 1/2 sqrt(p1  - 4 p0))

                                      2
         + _C2 (- 1/2 p1 - 1/2 sqrt(p1  - 4 p0)) = v0,

                          f
        _C1 + _C2 + -------------- = y0}
                     2
                    k  + p1 k + p0

# Ja issprende, gauname konkrecias laisvuju konstantu reiksmes. 
# 
>  solve(sys); 
> 

                                      2
  {v0 = - 1/2 _C1 p1 + 1/2 _C1 sqrt(p1  - 4 p0) - 1/2 _C2 p1

                          2
         - 1/2 _C2 sqrt(p1  - 4 p0), p1 = p1, p0 = p0, k = k, y0 = y0,

                                        2
        _C2 = _C2, _C1 = _C1, f = -_C1 k  - _C1 p1 k - _C1 p0

                2                           2
         - _C2 k  - _C2 p1 k - _C2 p0 + y0 k  + y0 p1 k + y0 p0}

# Istate C1 ir C2 i bendraji sprendini surandame atskiraji sprendini 
# Nepamirskime irasyti i atskirojo sprendinio israiska konstantu C1 ir
# C2 reiksmiu is sistemos (auksciau):
> a_s:=subs(_C1=c1,_C2=c2,bnh); 
> 

                                       2
  a_s := c1 exp((- 1/2 p1 + 1/2 sqrt(p1  - 4 p0)) t)

                                         2
         + c2 exp((- 1/2 p1 - 1/2 sqrt(p1  - 4 p0)) t)

                                     2
                                  f t
         + ---------------------------------------------------
            2                  2  2                2         2
           m  - m + 2 m k t + k  t  + p1 t m + p1 t  k + p0 t

# Atsakyma patikriname komanda dsolve 
# 
> anh:=dsolve({(D@@2)(y)(t)+p1*D(y)(t)+p0*y(t)=f,
> y(0)=y0,D(y)(0)=v0},y(t));

  anh := y(t) = - 1/2 exp((- 1/2 p1 + 1/2 %1) t)

        (p1 f - p1 y0 p0 + %1 f - %1 y0 p0 - 2 v0 p0)/(

           2        1/2
        (p1  - 4 p0)    p0) + 1/2 exp((- 1/2 p1 - 1/2 %1) t)

        (p1 f - p1 y0 p0 - %1 f + %1 y0 p0 - 2 v0 p0)/(

           2        1/2        f
        (p1  - 4 p0)    p0) + ----
                               p0

               2
  %1 := sqrt(p1  - 4 p0)

# Nehomogenines lygties sprendinys yra 
# 
>  plot(rhs(anh),t=-2..2,y=-5..5); 
> 
Plotting error, empty plot
> with(plots):densityplot(rhs(anh),t=-5..5,y=-5..5,grid=[49,49]);

> plot3d(rhs(anh),t=-5..5,y=-5..5);
Plotting error, empty plot
> animate( rhs(anh),y=-5..5,t=-5..5,frames=50);

> with(plots):gradplot(rhs(anh),t=-5..-5,y=-5..5,grid=[15,15], color =
> rhs(anh));
Error, (in plots/fieldplot) ranges must be non-empty

> with(plots):animate3d( rhs(anh),y=-5..5,u=-2..2,t=-5..5);
Plotting error, empty plot
> 
# Nehomogenines lygties sprendimo pavyzdys Nr.1
# 
# Spresime lygti L(x)=y"-4y'+3y=10 exp(-2t), y(0)=1,y'(0)=-3. 
# Si sprendini galima rasti nuosekliai pagal bendraja schema. 
# 
> restart;
> p0:=3;

                               p0 := 3

> p1:=-4;

                               p1 := -4

> Lx:=diff(y(t),t,t)+p1*diff(y(t),t)+p0*y(t); 

                     / 2      \
                     |d       |     /d      \
               Lx := |--- y(t)| - 4 |-- y(t)| + 3 y(t)
                     |  2     |     \dt     /
                     \dt      /

> f:=10*exp(-2*t);

                          f := 10 exp(-2 t)

> dl:=Lx=f; 

              / 2      \
              |d       |     /d      \
        dl := |--- y(t)| - 4 |-- y(t)| + 3 y(t) = 10 exp(-2 t)
              |  2     |     \dt     /
              \dt      /

# Surandame homogenines lygties L(x)=0 bendraji sprendini:
> char:=lambda^2+p1*lambda+p0=0; 

                                2
                  char := lambda  - 4 lambda + 3 = 0

> lambd:=solve(char,lambda); 

                            lambd := 3, 1

> char := 3, 1;

                             char := 3, 1

> bh:=dsolve(Lx,y(t)); 

                bh := y(t) = _C1 exp(t) + _C2 exp(3 t)

# Atskirojo nehomogenines lygties sprendinio ieskome pavidalu 
> lambda:=k;

                             lambda := k

> k:=-2;

                               k := -2

> R:=lambda^2+p1*lambda+p0=0; 

                             R := 15 = 0


> anh:=A*exp(k*t); 

                          anh := A exp(-2 t)

> eq:=eval(subs(y(t)=anh,Lx=f)); 

                 eq := 15 A exp(-2 t) = 10 exp(-2 t)

# Surandame konstanta A
> _A:=solve(eq,A); 

                              _A := 2/3

# Uzrasome bendraji nehomogenines lygties sprendini 
> bnh:=rhs(bh)+subs(A=_A,anh); 

           bnh := _C1 exp(t) + _C2 exp(3 t) + 2/3 exp(-2 t)

> isv:=diff(bnh,t); 

          isv := _C1 exp(t) + 3 _C2 exp(3 t) - 4/3 exp(-2 t)

# Istatome pradines salygas i bendraji sprendini ir jo isvestine: 
# y(0)=y0
> y0:=1;

                               y0 := 1

# y'(0)=v0
> v0:=-3;

                               v0 := -3

> l1:=eval(subs(t=0,bnh=y0)); 	

                      l1 := _C1 + _C2 + 2/3 = 1

> l2:=eval(subs(t=0,isv=v0)); 

                     l2 := _C1 + 3 _C2 - 4/3 = -3


# Sudarome sistema:
> sys:={l1,l2}; 

         sys := {_C1 + _C2 + 2/3 = 1, _C1 + 3 _C2 - 4/3 = -3}

# Ja  issprende, gauname konkrecias laisvuju konstantu reiksmes:
> solve(sys); 

                        {_C1 = 4/3, _C2 = -1}

# Istate jas i bendraji sprendini surandame atskiraji sprendini: 
# Nepamirskite istatyti _C1 ir _C2 i atskiraji sprendini is
# sistemos(virsuje):
> a_s:=subs(_C1=4/3,_C2=1,bnh); 

             a_s := 4/3 exp(t) + exp(3 t) + 2/3 exp(-2 t)

# Atsakyma patikriname komanda dsolve :
# 
> anh:=dsolve({(D@@2)(y)(t)-4*D(y)(t)+3*y(t)=f,
> y(0)=1,D(y)(0)=-3},y(t)); 

         anh := y(t) = 4/3 exp(t) - exp(3 t) + 2/3 exp(-2 t)

# Nehomogenines lygties sprendinys yra :
# 
> with(plots):densityplot(rhs(anh),t=-2..2,y=-5..5,grid=[49,49]);
Warning, the name changecoords has been redefined


> plot(rhs(anh),t=-2..2,y=-5..5,thickness=3,color=blue); 

> with(plots):animate( rhs(anh),y=-5..5,t=-2..2,frames=50);

> with(plots):animate3d( rhs(anh),y=-5..5,u=1..2,t=-2..2);

> plot3d(rhs(anh),t=-2..2,y=-5..5);

> with(plots):gradplot(rhs(anh),t=-2..2,y=-5..5,grid=[15,15], color =
> rhs(anh));

# Nehomogenines lygties sprendimo pavyzdys Nr.2
# 
> restart;
# Spresime lygti L(x)=x"-2x'+x=exp(t)+t, x(0)=1, x'(0)=0. 
> p0:=1;

                               p0 := 1

> p1:=-2;

                               p1 := -2

> y(t)=y;

                               y(t) = y

> Lx:=diff(y(t),t,t)+p1*diff(y(t),t)+p0*y(t);

                      / 2      \
                      |d       |     /d      \
                Lx := |--- y(t)| - 2 |-- y(t)| + y(t)
                      |  2     |     \dt     /
                      \dt      /

> f:=exp(t)+t; 

                           f := exp(t) + t

# Surandame homogenines lygties L(x)=0 bendraji sprendini 
> char:=lambda^2+p1*lambda+p0=0; 
> 
> 

                                2
                  char := lambda  - 2 lambda + 1 = 0

> lambd:=solve(char,lambda); 
>  

                            lambd := 1, 1

> bh:=dsolve(Lx,y(t));

                bh := y(t) = _C1 exp(t) + _C2 exp(t) t

# Atskirojo nehomogenines lygties sprendinio ieskome pavidalu 
> lambda:=k;

                             lambda := k

> k:=1;

                                k := 1

> R:=lambda^2+p1*lambda+p0=0; 

                              R := 0 = 0

# 
> m:=2;

                                m := 2

> anh:=A*t^m*exp(t*k)+C*t+B; 
> 

                               2
                     anh := A t  exp(t) + C t + B

> eq:=eval(subs(y(t)=anh,Lx=f)); 

            eq := 2 A exp(t) - 2 C + C t + B = exp(t) + t

> eq1:=eval(subs(t=-1,eq));eq2:=eval(subs(t=0,eq));
> eq3:=eval(subs(t=1,eq)); 

              eq1 := 2 A exp(-1) - 3 C + B = exp(-1) - 1


                       eq2 := 2 A - 2 C + B = 1


                eq3 := 2 A exp(1) - C + B = exp(1) + 1

# Sudarome sistema
> sys:={eq1,eq2,eq3}; 

  sys := {2 A - 2 C + B = 1, 2 A exp(1) - C + B = exp(1) + 1,

        2 A exp(-1) - 3 C + B = exp(-1) - 1}

# Ji issprende, gauname konkrecias laisvuju konstantu reiksmes. 
> solve(sys); 
> 

                       {A = 1/2, C = 1, B = 2}

# Istate jas i bendraji sprendini surandame atskiraji sprendini 
>  a_s:=subs(A=1/2,B=2,C=1,anh); 
> 

                                 2
                     a_s := 1/2 t  exp(t) + t + 2

# Uzrasome bendraji nehomogenines lygties sprendini
> bnh:=rhs(bh)+a_s; 
> 

                                               2
       bnh := _C1 exp(t) + _C2 exp(t) t + 1/2 t  exp(t) + t + 2

> isv:=diff(bnh,t); 

  isv := _C1 exp(t) + _C2 exp(t) t + _C2 exp(t) + t exp(t)

                2
         + 1/2 t  exp(t) + 1

# Istatome pradines salygas i bendraji sprendin ir jo isvestine. 
> l1:=eval(subs(t=0,bnh=1)); 

                          l1 := _C1 + 2 = 1

> l1i := _C1+2 = 1;

                          l1i := _C1 + 2 = 1

> l2:=eval(subs(t=0,isv=0)); 

                       l2 := _C1 + 1 + _C2 = 0

# Sudarome sistema
> sys:={l1,l2}; 

               sys := {_C1 + 2 = 1, _C1 + 1 + _C2 = 0}

# Ja issprende, gauname konkrecias laisvuju konstantu reiksmes. 
> solve(sys); 

                         {_C1 = -1, _C2 = 0}

# Istate jas i bendraji sprendini surandame atskiraji sprendini
> a_s:=subs(_C1=-1,_C2=0,bnh); 

                                          2
                a_s := -exp(t) + 2 + 1/2 t  exp(t) + t

# Atsakyma patikriname komanda dsolve 
> anh:=dsolve({(D@@2)(y)(t)-2*D(y)(t)+y(t) =f,y(0)=1,D(y)(0)=0},y(t)); 

                                             2
            anh := y(t) = -exp(t) + 2 + 1/2 t  exp(t) + t

>  plot(rhs(anh),t=-2..2,y=-5..5,thickness=3,color=pink); 

> with(plots):animate( rhs(anh),y=-5..5,t=-2..2,frames=50);
Warning, the name changecoords has been redefined


> with(plots):gradplot(rhs(anh),t=-2..2,y=-5..5,grid=[15,15], color =
> rhs(anh));

> with(plots):densityplot(rhs(anh),t=-2..2,y=-5..5,grid=[49,49]);

> with(plots):animate3d( rhs(anh),y=-5..5,u=-2..2,t=-2..2);

> plot3d(rhs(anh),t=-2..2,y=-5..5);

> 